#ifndef __SPACE_CLASS__
#define __SPACE_CLASS__

class PlayerClass;

#include <iostream>
#include <string>
#include "Const.h"
#include "PlayerClass.h"

using namespace std;

class SpaceClass
{
  public:
    int location;
    string name;
    SpaceClass();
    string getName();
};

class PropertyClass:public SpaceClass
{
  public:
    int cost;
    int mortgage;    
    PlayerClass* owner;
    bool mortgaged;
    PlayerClass* getOwner();
    PropertyClass();
};

////////////////////////////////  ESTATE  /////////////////////////////////////
class EstateClass: public PropertyClass
{
  private:
    int color;
    int rentBase;
    int rentMonopoly;
    int rent1;
    int rent2;
    int rent3;
    int rent4;
    int rentHotel;
    int numHouses;
    int numHotels;
    int houseCost;
  public:
    EstateClass();
    EstateClass(string name, int costVal, int mortgageVal, 
               int rent, int r1, int r2, int r3, int r4,
               int rHotel, int costHouse);

    

                
};

////////////////////////////////  RAILROAD  ///////////////////////////////////
class RailRoadClass: public PropertyClass
{
  private:
    int rent;
  public:
    RailRoadClass();
    RailRoadClass(string nameVal);
};

////////////////////////////////  UTILITY  ////////////////////////////////////
class UtilityClass: public PropertyClass
{
  private:
  public:
    UtilityClass();
    UtilityClass(string nameVal);
};

////////////////////////////////  JAIL  ///////////////////////////////////////
class JailClass: public SpaceClass
{
  private:
    bool inJail;
    int bail;
  public:
    JailClass();
};

class GoToJailClass: public SpaceClass
{
  private:
  public:
    GoToJailClass();
};

///////////////////////////////  FREE PARKING  ////////////////////////////////
class FreeParkingClass: public SpaceClass
{
  private:
    bool lottery;//changed in options menu
    int jackpot;
  public:
    FreeParkingClass();
    FreeParkingClass(bool freeParking);
};

///////////////////////////////  GO  //////////////////////////////////////////
class GoClass: public SpaceClass
{
  private:
    bool doubleMoney;//changed in options menu
  public:
    GoClass();
    GoClass(string nameVal);
};

///////////////////////////////  COMM CHEST  //////////////////////////////////
class CommChestClass: public SpaceClass
{
  private:
  public:
    CommChestClass();
};

///////////////////////////////  CHANCE  //////////////////////////////////////
class ChanceClass: public SpaceClass
{
  private:
  public:
    ChanceClass();
};

///////////////////////////////  TAX  /////////////////////////////////////////
class IncomeTaxClass: public SpaceClass
{
  private:
    int tax;
  public:
    IncomeTaxClass();
};

class LuxuryTaxClass: public SpaceClass
{
  private:
    int tax;
  public:
    LuxuryTaxClass();
};

#endif//__SPACE_CLASS__
